Compression coding is essential for efficiently storing or transmitting a digital image. As a method of compressively coding a digital image, used is discrete cosine transformation (DCT) that is a dominant technology in typical standards like JPEG (Joint Photographic Experts Group) and MPEG (Moving Picture Experts Group); In addition, waveform coding methods such as subband coding, wavelet transformation, and fractal are also used as the coding methods as well. To remove redundant signals between images, intra-frame coding is basically preformed based on a spatial correlation within one still image; in addition to this, inter-image coding is also performed in which inter-image prediction using motion compensation is performed based on a temporal correlation between each set of adjacent still images, and a difference signal obtained is subjected to waveform coding. Use of the both methods makes it possible to obtain coded data with a high compression ratio.
In the conventional image coding process according to the MPEG standard or the like, after the DCT process or the like, quantization process is performed, followed by variable length coding process. More specifically, a process such as DCT, subband, or wavelet is performed to digital image data, and the transform coefficients obtained by the above process are quantized using a prescribed quantization scale to generate quantized transform coefficients to which variable length coding process is to be performed.
The quantized transform coefficients obtained by quantization process are arranged in a two-dimensional array, and each coefficient indicates zero or non-zero. In the variable length coding process, zigzag scanning is performed to the coefficients (zero and non-zero) arranged in the two-dimensional array in a prescribed scanning order to rearrange the coefficients in one dimension, and thereafter, events are generated from the one-dimensional array of coefficients. Each event consists of a Run that indicates a number of preceding zero coefficients and a Level that indicates the value of a non-zero coefficient. Then, coding is performed by referring to a variable length code table prepared in advance in which a unique variable length code is allocated to each event consisting of a Run and a Level. Moreover, in stead of this method, an alternative method may be used, such as a method of allocating another code which indicates if a coefficient is a last one, or a method of performing coding with reference to a table where variable length codes are allocated to events each consisting of a set of (Run, Level, Last) obtained by adding a Last indicating if a coefficient is a last one to a set of a Run and a Level.
FIG. 18 is a flowchart illustrating the procedure of a prior art coding process to an event consisting of (Last, Run, Level). Hereinafter a description is given of the conventional coding process with reference to the flow of FIG. 18.
Following the initiation of the process in step 1801, a j-th event is input as an input event which is an object to be processed. In step 1803, comparison is performed between this input event and a reference event included in a variable length code table.
FIGS. 19 through 22 show instances of the variable length code table used for the prior art variable length coding process. As illustrated, in the tables, events each consisting of (Last, Run, Level) correspond to codes. In the figures, "s" in a "VLC CODE" cell indicates zero when Level is positive, whereas it indicates 1 when Level is negative. Further, when Last is 0, it indicates that the coefficient concerned is not the last coefficient.
In step 1803 of FIG. 18, by referring to this variable length code table, comparison is performed between the input event and each reference event included in the table consisting of (Last, Run, Level); In step 1804, according to the above comparison process, it is decided whether there is a reference event of which (Last, Run, Level) is identical to that of the input event. When it is decided in step 1804 that there is such reference event, step 1805 is performed, whereas, when such a reference event is not found, step 1806 is performed. At this point, if step 1805 is performed, a variable length code corresponding to the reference event is output, followed by step 1807 which will be described later.
On the other hand, in the case where step 1806 is performed, that is, in the case where the (Last, Run, Level) identical to that of the event as an object to be processed cannot be found when the variable length code table is referred, fixed length coding is performed in step 1806. FIG. 23 are diagrams conceptually illustrating fixed length coding. As shown in the figures, the codes shown in FIG. 23(a) are allocated to RUNs and the codes shown in FIG. 23(b) allocated to Levels, respectively, and these codes are the results of the coding. In this fixed length coding process, a control code for indicating that a result of the coding is a fixed-length code is added in such a way that it is transmitted prior to the result of the coding, so as to distinguish the code obtained by fixed length coding from the code obtained by variable length coding. This control code is called "escape code (ECS)", and in this case, a code "0000011" shown in FIG. 22 is used as the control code. More specifically, when fixed length coding is performed, coded data is obtained comprising a 7-bit ESC code and the code thus allocated subsequent to the ESC code.
Following the performance of step 1805 or step 1806, in the subsequent step 1807, it is decided whether an input event processed is a last input event or not, and if it is decided that the event is the last one, the coding process is completed in step 1808. On the other hand, if it is decided that the event is not the last one, j is incremented by 1 in step 1809 and the operation returns to step 1802, whereby a next input event is processed in the same manner. Thus, the process is continued to the last non-zero coefficient.
As described above, in the prior art image coding process, events are generated for quantized transform coefficients and comparison is made between the event and a reference event included in a variable length code table; if the matching event is found, a variable length code derived from the table is used, whereas, if no matching event is found, a result of fixed length coding, to which a control code (ESC code) is added, is used.
Generally, a variable length code table is formed by investigating statistical distribution using numeral images and allocating shorter codes to the events occurring most frequently, whereby the overall compression ratio is improved. As described above, if coding is not performed using a variable length code table, fixed length coding is performed and the compression ratio is thus degraded; Therefore, it is desired to make a setting which hardly causes fixed length coding. In the prior art image coding, as shown in FIG. 18, if it is decided in step 1804 that there is no reference event concerned, fixed length coding is immediately performed in step 1806, which means that a rate of performing variable length coding with better coding efficiency is directly decided by a rate at which an event concerned is present in a variable length code table.
In image compression coding, however, the statistical distribution of coefficients varies according to the quantization scale, and it is understood that the distribution of coefficients having high compression ratio differs considerably from that having low compression ratio. Therefore, when an appropriate variable length code table is not used for coefficients as objects, the rate at which the event concerned is present in the variable length code table is decreased and the rate of performing fixed length coding is increased, resulting in reduced coding efficiency.
Generally, as the quantization scale is increased, the compression ratio of quantized transform coefficients is increased, but the event derived from such quantized transform coefficients tends to have a smaller value of Level. The variable length code table shown in FIGS. 19 to 22 includes many events having small Level values to which short codes are allocated, and is suitable for use in the case where quantized transform coefficients having relatively high compression ratio are used as processing objects. Therefore, if the quantization scale is small and the compression ratio of quantized transform coefficients is low, many of the events derived have large Level values. So, the rate at which an event concerned is not present in such variable length code table is increased and the events present in the table are often allocated relatively long codes, resulting in increased bit number of the result of the coding. In other words, employing a variable length code table formed for low compression ratio in coding at high compression ratio leads to decrease in coding efficiency.
As described above, when a variable length code table set properly is not used for the coefficients which are the processing objects of variable length coding, since variable length coding cannot be performed and fixed length coding is performed more frequently, and the amount of bits is increased even when variable length coding is performed, the amount of code is increased and improvement of compression ratio is prevented, which is a problem of the prior art image coding process.